23

» WarCraft 3 / Случайный каст

Похожие вопросы:

ответ
nvc123, ну так потому я и подписался как Кэп. Просто тема почему-то до сих пор не закрыта, вот я и подумал, что твой ответ не понятен. Ибо, уложить такую формулировку в одно слово - это, конечно, мастерство :)
ответ
если это каст который не сбивает приказ то нужно безумие юзать либо сохранять приказ (теряется последовательность)
если же это скилл который имеет малое время каста то либо просто настроить скорости каста/анимации либо делать как сказал ссср
Starman2222, для новичков у нас есть вот это
прочти разделы 1 и 2 и научись внятно объяснять что тебе нужно
потом возвращайся
ответ
Геометрия, седьмой класс, "Теорема Пифагора", а также "Теоремы Синусов и Косинусов" в помощь.
ответ
Ну как сказать, юнит является юнитом секунды 3 после смети (или сколько там установлено время смерти), потом его уже нету на карте, поэтому можно и не искать, но герои сидят в памяти пока их не удалят, в отличии от обычных юнитов, но всеравно их уже не существует в понимании движка на уровне бегающих и дерущихся юнитов.
ответ
Не удивительно, кто так делает?
Никаких вейтов в гуппах использовать нельзя, что за глупость! Для задержек существуют таймеры!
Слишком низкое время жизни дамми юнита, ставь секунд 5, то рисукуешь убить юнита неизвестно кем.
Ты не даешь видимость и не создаешь даммика за нейтрально пассивных, а зря! Даммик может не удивить в кого ему кинуть корни, цель можеть быть в тумане войны.
Чтобы кинуть корни в случайных юнитов в радиусе, есть особое дейстие GroupPickRandomUnit().
Спелл нужно переписать с 0, так же удалить русс. триггеры!

23

» WarCraft 3 / Партиклы

Похожие вопросы:

ответ
Не нашёл способа как отредактировать модель. Вообще данный юнит у меня под locust'ом поэтому принял решением для себя следующее:
триггерное увеличение юнита в 9999 раз. Партиклы исчезают :)
(если уменьшать размер до 0 - их видно)
Костыль в общем.

23

» WarCraft 3 / Тип дополнительного урона

Похожие вопросы:

ответ
Эмм что за ерунда, сократил код, убрав всё лишнее, но утечки все равно остаются, по 1.5 - 2 хэндла за каждое нанесение урона (тип хэндла не знаю как посмотреть). Когда триггер отключаешь, то всё нормально.
Сокращенный код
function SDMSCreateTextTag takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local unit s=GetEventDamageSource()
    local integer i=GetConvertedPlayerId(GetOwningPlayer(u))
    local texttag tt=CreateTextTag()
    local real dmg=GetEventDamage()

    if ( dmg > 1.00 ) and ( dmg < 9999.00 ) then
        if GetPlayerId(GetOwningPlayer(u))==12 then
            call SetTextTagText(tt, "|cff9db9eb-"+I2S(R2I(dmg))+"|r", 0.023)
        else
            call SetTextTagText(tt, "|cffffa500-"+I2S(R2I(dmg))+"|r", 0.023)
        endif
        call SetTextTagPosUnit(tt, u, 0)
        call SetTextTagColor(tt, 255, 255, 255, 255) 
        call SetTextTagVelocity(tt, 0.05325*Cos(90 * bj_DEGTORAD), 0.05325*Sin(90 * bj_DEGTORAD))
        call SetTextTagPermanent(tt, false)
        call SetTextTagLifespan(tt, 1.0)
        call SetTextTagFadepoint(tt, 0.0)
    endif
    call PolledWait(2.0)

    call DestroyTextTag(tt)
    set u=null
    set s=null
    set i=0
    set dmg=0
    set tt=null
endfunction

function SDMSTriggerRegisterUnitDamaged takes nothing returns nothing
    call TriggerRegisterUnitEvent(udg_SDMStrigger,GetEnteringUnit(),EVENT_UNIT_DAMAGED)
endfunction

function theSDMSTriggerActions takes nothing returns nothing
    local trigger UnitEnter=CreateTrigger()

    call TriggerRegisterEnterRectSimple(UnitEnter, gg_rct_Arena)
    call TriggerAddAction(UnitEnter,function SDMSTriggerRegisterUnitDamaged)

    set UnitEnter=null
endfunction

function InitTrig_the_SDMS_Trigger takes nothing returns nothing
    local trigger tr=CreateTrigger()

    set udg_SDMStrigger=CreateTrigger()//Тут также меняется название глобальной переменной типа триггер.
    call TriggerAddAction(udg_SDMStrigger,function SDMSCreateTextTag)
    call TriggerRegisterTimerEventSingle(tr,0.0)
    call TriggerAddAction(tr,function theSDMSTriggerActions)

    set tr=null
endfunction
Wait вызывает утечки ((
Пришлось делать через таймер
ответ
Решения не было найдено! Самый верный способ сделать свою систему улучшений для юнитов, разбивая их на группы по признаку кол-ва грани у кости и кол-во костей, и в зависимости от этого повышать урон
ответ
Ответ:
"Бой- атака(эффект от улучшений)
ответ
Событие - получает урон, проверяешь тип юнита, который нужен и наносишь сверху урон, сколькотебе надо
ответ
VovkaShyt, будет, хоть 10 хоть 0,01 будет снижаться количеством брони, а эти параметры - снижение от типа брони, сила тьмы игнорирует тип брони, а вот атака героя не игнорирует тип защиты зданий, здания, вспомните как долго в мили картах ломаются здания.

23

» WarCraft 3 / Несколько простых вопросов

Похожие вопросы:

ответ
Добро пожаловать на факультет самообразования.
ответ
local real x = GetRandomReal(GetRectMinX(GetPlayableMapRect()), GetRectMaxX(GetPlayableMapRect()))
local real y = GetRandomReal(GetRectMinY(GetPlayableMapRect()), GetRectMaxY(GetPlayableMapRect()))
...
(действия с координатами)
...
Любые действия с локейшном можно переделать под координаты, если не используется z-координата, как сказано выше. Но z-координату используют не только лишь все, мало кто может это делать.
И обнулять ничего не придётся, так как действительное число не утекает.
ответ
как привязать переменную к существу
хэш,кс,структуры
выбор обширен
все варианты расписаны в статьях
ответ
кхе, всё вроде можно, но объяснять долго, третье простое, просто при юзании способности в триггерах добавь условие сравнения, если юнит цель применяемой способности нежить, тогда действие о дополнительном уроне, например если способность наносит 100, то 20% это 20,в действии приказать применяющий юнит нанести урон юнит цель применяемой способности 100+(0.20х100), перед этим 100 можно установить, как переменную, например если с каждым уровнем урон растёт на 100, то переменная int=100хУровень способности способность у применяющий юнит.
Сложно объяснил?
ответ
Немного теории.
В подобных моделях используются тэги ("upgrade first", "upgrade second"). На разных уровнях улучшения проигрываются анимации с разными тэгами. Виден один вариант здания, при этом остальные варианты невидимы.
В принципе, можно в настройках для разных юнитов выбрать разные модели, но если нужно именно всё в одной - можно обратиться за помощью в тему: xgm.guru/p/wc3/needmodels

23

» WarCraft 3 / Ломаются триггеры

Похожие вопросы:

ответ
nvc123:
Bariy vad, бред
ZLOI_DED, джнгп сам выносит переменные в блок глобал
ZLOI_DED, короче скрины с ошибкой и строкой на которую ругается в студию
В том то и ананас, что никто ни на что не ругается. Он просто берёт и не запускается. А всё что я сказал выше - мои наблюдения в сравнении.
Ещё важное замечание. JassHelper на старой карте сам выдаёт ошибки. На новых - херушки... Что за аншлаг? o_0
100% проблема в JassHelper'е! Не у меня одного такая фигня. На хайвворкшопе есть подобные темы, но там он хотя бы запускается, а у меня даже не запускается.
А я ландом занимался... не хотелось бы карту с нуля переделывать... Может есть у кого какие идеи?
UPD: Решилось установкой новой версии JassHelper и пересохранением карты через Сохранить как...
ответ
ssbbssc, вот сделал пару гифок. На одной у пеха стоит "можно оживить, разлагается", а на другой "нельзя оживить, разлагается"
смотреть сюда
ответ
datar1231, вот держи карту.
Когда будешь добавлять предмет, не забудь запретить его применение (в редакторе объектов: Нужно задействовать = Нет) и вообще удалить ему способность.
ответ
Daniil33, вот тебе рабочий пример, попробуй сам разобраться в чем у тебя ошибка.
ответ
Steal nerves:
инструкции как таковой нет, могу описать, но здесь миллион примеров нужно, чтобы разжевать новичку (и случаи уникальны у каждого, и их очень много. Не знаю с чего начать). А вообще что там сложного? знаешь jass, и все. Тебе нужно знать является ли объект хэндл, и нужно ли его удалять (или побочная нативка удалит, как например у текстагов. Текстаги можно не удалять напрямую, есть у него функция, задающая время жизни. Текстаг сам исчезнет. Или вот фильтр удалять не обязательно, она не утекает). Все одинаково: нужно удалить объект (помню, у меня жестко мультиборд утекал, пока не узнал, что есть функция обновляющая ячейку, она еще дает не плодит новые). Поэтому нужно знать можно ли удалить (умирающего юнита например удалять не нужно, сам разложится. А вот например предметы как руны нужно, при подборе руны, руна остается в игре. Например, миллионы книжек в магазине, если игрок будет покупать миллионами, он будет плодить. Поэтому при получении удаляй сразу). Чистить содержимое в хэш-таблице, и обнулять локалки. Функции BJ могут утекать, там не обнуляют локалки. Раскрыть функции BJ, там где есть локалка не обнуленная подправить и др. Помню, хотел взять координаты от точки, там x и y. Я вызвал (создал) два раза точки, раньше не понимал, что создаю точки. Нужно найти альтернативные, что возвращают не точку, а координаты (реальные числа), например, юнита. Чтобы знать, это надо смотреть на сайте (попался необычный хэндл, вбиваешь в поиск). Тебе нужна библиотека всех функции и нативок. Очень удобная библиотека есть в jngp. Щас нубы очень не любят jngp, так как не отображает ошибки и не компилирует что-то. Так выключите плагин UMSWE, и Vjass и Cjass тоже выключите. Пользуйтесь библиотекой и новыми триггерными менюшками, доступны в hNGP без этого. Все придет с опытом, просто подольше посиди с кодом.

23

» WarCraft 3 / Лимит

Похожие вопросы:

ответ
решил проблему костылём - дал возможность рабочему строить только башню - шаблонку, которая в свою очередь может улучшаться в две указанные башни. Взаимосвязь поставить только от башни - шаблонки. Лимит поставил на башню шаблонки.
Но тема не закрыта. Хотелось бы узнать можно ли решить проблему без костылей.
ответ
Возможно нет строки триггера.
На сколько знаю в триггерах нет ограничений, по крайне мере с этим не сталкивался, но в переменных есть, какое количество не знаю, но я всё сжал у себя.
ответ
Steal nerves:
в чем разница между ExecuteFunc и просто call
PT153, ну call просто вызываешь потоком (он не создает поток), например у тебя в ряд выставлены сверху вниз названия функции со скобочками (и внутри скобок аргументы, а если не берет никаких аргументов, то внутри скобок пусто) и через call вызывает одну за другой последовательно сверху вниз.
call название функции (аргументы)
Допустим первую верхнюю функцию вызвали, и ее обработали, потом поток берет вторую внизу функцию и обрабатывает и т.д. Но у потока есть ограничения в операциях, как только выполнится определенное количество операций, варкрафт экстренно завершает поток и даже не сообщает об этом.
call функция 1()
call функция 2()
......
call функция 999()
Тут хочу обратить внимание и на то, насколько длинный код в этой вызываемой функции. И сколько вызываемой работы потребует: всякие вычисления, бесконечные циклы и другое. Если длинный код у тебя, и кучу циклов, и сами циклы большую работу совершают, то следует разбить на участки или как-то переделать что ли, уменьшить работу цикла и др.
Можно разбить на функции и ...
  1. вызывать через call, но так делать не стоит. Поток вызывает эти функции последовательно.
  2. Нужно делать задержку (через вэйт), например в ИИ-скриптах варкрафта делают задержку, чтобы не было нагрузки. Вместо вэйта можно таймер.
  3. через ExecuteFunc, ExecuteFunc создает отдельный новый поток. информацию про ExecuteFunc скидывал выше.
ответ
Roy Mustang:
128 mb
ответ
GetLocalPlayer, Нет, на гуях мемхака, вовсе исключён...
Так же мемхак нужно еще заставить работать, если ваши познания jass ниже среднего, а так же вам лень читать статьи по 10 страниц - эта наработка явно не для вас.

23

» WarCraft 3 / После воскрешения героя пропадает видимость

Похожие вопросы:

ответ
Steal nerves, для такой системы достаточно локалка + вейт
и ненужны никакие массивы и хэштаблицы
локалки как раз обеспечивают муи

23

» WarCraft 3 / Не работает триггер

Похожие вопросы:

ответ
Steal nerves:
  1. посмотри в РО у абилок прописаны приказы
  2. попробуй выводить на экран (см. внизу ссылку). Тыкни этой абилкой на юнита и проверь
  3. поищи в текстовике cj_order.j (находится в архиве игры). Кстати можно этот текстовик на сайте найти, Скорп 1000 выставлял
  4. поищи на сайте, такой вопрос был. Кому-то я на такой вопрос отвечал
ратуша самой себе может продавать? попробуй настроить способность, и потыкает на себя пусть. Мб нельзя
ответ
Ради прикола поставь ожидание. Wait на 2 сек. Должно сработать.
ответ
и в условиях наоборот тоже, там у тебя picked вместо matched
ответ
ScopteRectuS, Я решил проблему там баг, если указать регион как точку назначения портала, то с ним триггеры перестают работать. Я просто указал другой регион.
biridius, Ну это альфа версия, за 5 мин сделал, знаю об утечках.

23

» WarCraft 3 / Замедление времени

Похожие вопросы:

ответ
Добавлять бафы триггерами, на сколько я знаю, нельзя, но можно снимать.
Чтобы повесить баф на юнита, нужно:
  • Создать способность которая повесит нужный баф
  • Создать дамми юнита (с абилкой москит) и дать ему эту способность
  • В нужный момент создавать этого юнита и кастовать им по нужной цели
При инициализации карты, создать и удалить всех юнитов которые будут потом создаваться триггерами, чтобы избежать секундных фризов.
ответ
Юзай ретурн баг, он снова доступен...
Просто массив целочисленных куда записаны ид code.
Вот ссылочка

23

» WarCraft 3 / Защита карты

Похожие вопросы:

ответ
никак
ответ
lll_Kirito_lll:
Хочется иметь у себя только модель допустим )
Как вариант, сделать так, что бы модель была разбита на множество текстур которые раскиданы по самым дурацким путям. Ни какой картодел не будет вытаскивать такую модель, ни за что.
ответ
Tumart:
quq_CCCP, а можно поподробнее? И это защитит карту от инжекта?
Подробно - это сделай за меня?
Суть:
 call  BJDebugMsg( I2Sx( 100500  ) )
Выдаст разные значения в депротектнутой и нормальной картах, пока это теория но возьмите и проверьте.
I2Sx - фольклорная функция ретурн бага, суть преобразует хеш от строки в строку. именно хеш а не инт. т.е адрес в таблице строк на строку.
вот RetunrBug ( www.hiveworkshop.com/threads/accessing-memory-from-the-script-it... )
функция в либе Typecast - I2SH
Ну кароче проверил:
function Trig_J_Test_Actions takes nothing returns nothing
    local integer i = 486
    local string str = null
    set str = S2S( I2SH( i ) )
    call BJDebugMsg( str )
    set str = null
endfunction

//===========================================================================
function InitTrig_J_Test takes nothing returns nothing
    set gg_trg_J_Test = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_J_Test, Player(0) )
    call TriggerAddAction( gg_trg_J_Test, function Trig_J_Test_Actions )
endfunction
При добавлении, удалении 3 функций сменяется строка по этому адресу, самое главное найти последнюю строку (ну или как я от балды ввел число) хотя я не уверен что прокатит с числом от балды, нужно найти последнюю строку на момент загрузки карты и смотреть её адрес, а после смотреть что будет записано по этому адресу в таблице строк.
ответ
Karp, Ой способов защиты 100500, щяс есть мемхак, я уже выкладывал пример как проверить вводились ли в код карты измненения.
Так же есть возможность писать код карты байткодами, которые внезапно низя прочитать или перевести в JASS это внутренние инстркции JASS машины. Но это достаточно сложно. Так же Можно загружать свои ДЛЛ, а это дает полный контроль над картой, можно зашифровать и сжать данные в архиве хер знает какими алгоритмами которые никогда не видел варкравт, а при загрузке срипта вызывать Дллку которая бы и расшифровывала это дело и вызывала функцию чтения архива + проверяла контрольную сумму архива (вроде в мемхаке была эта функция), контрульная сумма не та - выгружаем из ДЛЛ вирус, чтонить на подобии шифровальщиков. И читерам уже не до карты и варкравта в целом...
Это не для гуи новичков, придется долго морщить лоб и писать карту на jass + малость в с++ шарить.
ответ
XGM Bot:
Похожие вопросы:

ответ
никак
ответ
lll_Kirito_lll:
Хочется иметь у себя только модель допустим )
Как вариант, сделать так, что бы модель была разбита на множество текстур которые раскиданы по самым дурацким путям. Ни какой картодел не будет вытаскивать такую модель, ни за что.
ответ
Tumart:
quq_CCCP, а можно поподробнее? И это защитит карту от инжекта?
Подробно - это сделай за меня?
Суть:
 call  BJDebugMsg( I2Sx( 100500  ) )
Выдаст разные значения в депротектнутой и нормальной картах, пока это теория но возьмите и проверьте.
I2Sx - фольклорная функция ретурн бага, суть преобразует хеш от строки в строку. именно хеш а не инт. т.е адрес в таблице строк на строку.
вот RetunrBug ( www.hiveworkshop.com/threads/accessing-memory-from-the-script-it... )
функция в либе Typecast - I2SH
Ну кароче проверил:
function Trig_J_Test_Actions takes nothing returns nothing
    local integer i = 486
    local string str = null
    set str = S2S( I2SH( i ) )
    call BJDebugMsg( str )
    set str = null
endfunction

//===========================================================================
function InitTrig_J_Test takes nothing returns nothing
    set gg_trg_J_Test = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_J_Test, Player(0) )
    call TriggerAddAction( gg_trg_J_Test, function Trig_J_Test_Actions )
endfunction
При добавлении, удалении 3 функций сменяется строка по этому адресу, самое главное найти последнюю строку (ну или как я от балды ввел число) хотя я не уверен что прокатит с числом от балды, нужно найти последнюю строку на момент загрузки карты и смотреть её адрес, а после смотреть что будет записано по этому адресу в таблице строк.
ответ
Karp, Ой способов защиты 100500, щяс есть мемхак, я уже выкладывал пример как проверить вводились ли в код карты измненения.
Так же есть возможность писать код карты байткодами, которые внезапно низя прочитать или перевести в JASS это внутренние инстркции JASS машины. Но это достаточно сложно. Так же Можно загружать свои ДЛЛ, а это дает полный контроль над картой, можно зашифровать и сжать данные в архиве хер знает какими алгоритмами которые никогда не видел варкравт, а при загрузке срипта вызывать Дллку которая бы и расшифровывала это дело и вызывала функцию чтения архива + проверяла контрольную сумму архива (вроде в мемхаке была эта функция), контрульная сумма не та - выгружаем из ДЛЛ вирус, чтонить на подобии шифровальщиков. И читерам уже не до карты и варкравта в целом...
Это не для гуи новичков, придется долго морщить лоб и писать карту на jass + малость в с++ шарить.
ответ
XGM Bot:
Похожие вопросы:

ответ
никак
ответ
Ну да, после этого в редакторе карт не откроешь. Но им и никто не пользуется для этого, когда есть MPQ Editor.
ответ
lll_Kirito_lll:
Хочется иметь у себя только модель допустим )
Как вариант, сделать так, что бы модель была разбита на множество текстур которые раскиданы по самым дурацким путям. Ни какой картодел не будет вытаскивать такую модель, ни за что.
ответ
Tumart:
quq_CCCP, а можно поподробнее? И это защитит карту от инжекта?
Подробно - это сделай за меня?
Суть:
 call  BJDebugMsg( I2Sx( 100500  ) )
Выдаст разные значения в депротектнутой и нормальной картах, пока это теория но возьмите и проверьте.
I2Sx - фольклорная функция ретурн бага, суть преобразует хеш от строки в строку. именно хеш а не инт. т.е адрес в таблице строк на строку.
вот RetunrBug ( www.hiveworkshop.com/threads/accessing-memory-from-the-script-it... )
функция в либе Typecast - I2SH
Ну кароче проверил:
function Trig_J_Test_Actions takes nothing returns nothing
    local integer i = 486
    local string str = null
    set str = S2S( I2SH( i ) )
    call BJDebugMsg( str )
    set str = null
endfunction

//===========================================================================
function InitTrig_J_Test takes nothing returns nothing
    set gg_trg_J_Test = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_J_Test, Player(0) )
    call TriggerAddAction( gg_trg_J_Test, function Trig_J_Test_Actions )
endfunction
При добавлении, удалении 3 функций сменяется строка по этому адресу, самое главное найти последнюю строку (ну или как я от балды ввел число) хотя я не уверен что прокатит с числом от балды, нужно найти последнюю строку на момент загрузки карты и смотреть её адрес, а после смотреть что будет записано по этому адресу в таблице строк.
ответ
Karp, Ой способов защиты 100500, щяс есть мемхак, я уже выкладывал пример как проверить вводились ли в код карты измненения.
Так же есть возможность писать код карты байткодами, которые внезапно низя прочитать или перевести в JASS это внутренние инстркции JASS машины. Но это достаточно сложно. Так же Можно загружать свои ДЛЛ, а это дает полный контроль над картой, можно зашифровать и сжать данные в архиве хер знает какими алгоритмами которые никогда не видел варкравт, а при загрузке срипта вызывать Дллку которая бы и расшифровывала это дело и вызывала функцию чтения архива + проверяла контрольную сумму архива (вроде в мемхаке была эта функция), контрульная сумма не та - выгружаем из ДЛЛ вирус, чтонить на подобии шифровальщиков. И читерам уже не до карты и варкравта в целом...
Это не для гуи новичков, придется долго морщить лоб и писать карту на jass + малость в с++ шарить.



23

» WarCraft 3 / Как сделать своего юнита нейтральным?

Похожие вопросы:

ответ
Вот сделал карту пример, на которой все юниты кроме 2 исчезают, заносятся в отряд- переменную (у меня в событии истечение 10 секунд) и появляются только если умер герой, который подчиняется тебе..
пример простой, его можно настроить как тебе нужно, я только показал принцип. Если что будет непонятно - спрашивай)
ответ
чтобы было вообще по своему вкусу отключаешь стандартное получение опыта и пишешь свою систему
в этом тебе помогут статьи
ответ
Как это сделано у меня в страннике:
Есть области, 1 для каждого НПС,
Есть группа, куда записаны все НПС.
Есть таймер с периодичностью в 3 секунды. Каждый раз идет проверка. Проверятся, что НПС состоит в группе и если случайное число 0-100 меньше и равно 50, то НПС двигается в случайную точку в своей области.
Когда герой начинает говорить, НПС останавливает свой приказ, поворачивается к герою и удаляется из группы, чтобы когда таймер сработал он не убежал.
Соответственно когда разговор окончен, НПС снова добавляется в эту группу.
Все просто.

23

» WarCraft 3 / Один меч в одни руки

Похожие вопросы:

ответ
Эх, друг) ну я реализовал так. Есть в способностях замечательный закл перевоплащение иллидана. В нейтрально - враждебных. То есть ты создаешь двух героев у одного рэнжа 600 у другова 100 например, а этот спел меняет твоих героев местами(каждому там уже свои спец эффекты делаешь). Там есть еще у меха спел есть похожий, там без ограничения по времени, ну думаю идею ты понял.

23

» WarCraft 3 / Область = позиции юнита

Похожие вопросы:

ответ
Не понимаю в чем проблема. Подвисание происходит от того, что на карте впервые появляется тип юнита (со спецэффектами может быть тоже самое). Подвисание убрать невозможно, но можно сделать так, чтобы оно происходило в более подходящий момент. Конкретно — сразу после загрузки карты. Для этого создаем триггер, который при инициализации сделает следующее:
  1. Создаст в недоступном месте даммика.
  2. Даст ему все способности, которые даммик может получить в ходе игры.
  3. Повысить все эти способности до максимального уровня.
  4. Удалить дамми.
Какие тут могут быть проблемы в реализации? Не важно каким образом и при каких обстоятельствах вы будете использовать дамми после. Не способность нужно запустить, а просто создать даммика. Даммик вызвает лаг, а не способность из РО и не прочий код.
ответ
Патиссончик, про центр области не заметил
точка каждый раз создаётся заново и это утечка
Патиссончик, есть прога на сайте для записи логов
так же есть дебаг через прелоад на сайте
вот счётчик утечек
ответ
Ну у мастера клинка способность то посложнее...
Вот пример:
Для начала нам нужно создать иллюзии героя, а потом скрыть всех их, так же сделав визуальный эффект (если что то зеленые тени, это снаряды).
ответ
~8gabriel8:
Сделал через Integer Comparsion, где количество нужных юнитов, рыбацких лодок, в области над магическим кругом больше 0.

23

» WarCraft 3 / (Редактор карт) Что не так в триггере?

Похожие вопросы:

ответ
  1. Думаю, что можно.
Берем основную модель, возможно, вообще без мяса, только с гусеницами, но с кучей точек крепления. Также берем кучу моделей-аттачметов, представляющих собой эти самые пушки, корпуса и все прочее. При выборе характеристик модели через диалог или интерфейс соответственно создаем на основной модели эффекты-аттачменты, будет собрана техника. Такие штуки, как двигатель и прочие невидные извне элементы будут скорее входить в математическую модель юнита, но это также можно запилить. Название танка - сразу не скажу, есть ли триггер на смену, но на таблице рекордов можно отобразить что угодно.

2.Тоже можно.
Создаем погодный в определенной местности и делаем два триггера для контроля входа-выхода юнитов из нее. На искомых юнитов применяем нужные способности - и все готово.

  1. Здесь чуть сложнее: нужно постоянно проверять тип местности под юнитом, но тоже можно. Проверка на ограждения тоже может бить сделана.

4.Это уже интереснее. Видел раньше подобное в играх. При каждой атаке юнита случайным образом наносим или не наносим доп. урон, эффект горения, кидаем спелл на цель в зависимости от теоретического места попадания атаки.

5.И это можно. Но нужно писать нестандартную систему Альянса. Но через триггеры и JASS все можно...

  1. Продажа техники - лучше через способность, что бы кидать ее на понравившегося юнита, не стоит покупать кота в мешке. Стоимость должна зависеть от технического уровня юнита, его текущего состояния (мертвый танк попадет вам бесплатно, сами чините!), если он был модернизован дополнительно, то это тоже входит в стоимость. Разрешение на продажу делаем аналогично.

  1. Это легко через Custom Value и переменние.

Как ты понял, все что ты предложил создать можно, но на это нужно потрать хороший кусок времени. Остается пожелать тебе удачи над созданием проекта - мне идея уже нравится.
ответ
Нашёл решение для тебя.
Пол-ночи провозился, но нашёл. почему-то это стало делом чести - открыть сию карту в редакторе

В общем, берёшь архив из аттача и тупо суёшь папку UI в корень варкрафта. После этого карта будет открываться любым вариантом редактора - как JNGP (любым), так и (даже!) стандартным.
Важно: локальные файлы должны быть разрешены.

Только там такой срач и дичь, что лучше реально своими руками с нуля писать...
ответ
Изучение и использование любого языка программирования - крайне интересный процесс, и JASS - далеко не самый плохой вариант для того, чтобы быть изученным первым =)
Но если изучать что-либо не хочется, то ищите исполнителя и просите у него определённого результата за соответствующее вознаграждение.
ответ
8gabriel8, довольно много. Разбиение на отдельные триггеры может помочь от проблем с лимитом операций, но если в этом коде нет циклов, то оно практически бессмысленно. Ради интереса можешь попробовать сохранить карту с конвертированными триггерами, вдруг причина в модуле редактора, который за отрисовку GUI отвечает.
ответ
Закрыто.

23

» WarCraft 3 / Анимирование модели

Похожие вопросы:

ответ
JesusHipster:
Если ты хочешь просто камеру и портрет - импортировать их под одним именем, но второй модели приписать _portrait. Хочешь одной моделью - сделать камеру в camera manager во вкладке окна. Там все интуитивно. Если именно объединить модели, то такой функционал был у одной утилицы с хайва, но нужна еще ручная настройка и это совсем не в модел эдиторе делается. веса от этого не сильно убавится, меш не так много весит обычно как анимации, так что запариваться не советую с этим.
Я импортирую и портрет и модель, Sniper.mdx и Sniper_Portrait.mdx, я их импортирую, но вместо портрета у снайпера случайный ракурс, как и без портрета. Может, кинуть файлы, сам протестишь?
ответ
Вершины все правильно прикреплены к костям?
ответ
Все, разобрался. Тема закрыта)))~ssbbssc, Не нельзя, просто сама модель очень маленькая а при увеличении ее в игре баф над головой и под моделькой (например аура) становится очень огромным, а модель вроде нормальная
ответ
GF RaiseD:
FrigatPlay, если все совсем плохо - гугли "Основы 3D-Анимации".
ответ
создал анимацию birth без всего. тебе туда надо добавить строительство НЭ?

23

» WarCraft 3 / Помощь с триггерами.

Похожие вопросы:

ответ
Steal nerves:
Честно я не знаю меняет родная защита и прочие характеристики юнита при использовании тёмный. Давно не игрался с этим. Да и делал я типа кур. Говорят там только модель меняется. А вот перевоплощение да там могут меняться атрибуты и прочее. Если так то редактируйте этого юнита. И вообще проверяйте сами все
При использовании абилы тёмный сам юнит никуда не удаляется, просто модель меняется (сам даже удалял много ещё) - трудно проверить?
Сделал с перевоплощением. Спасибо за идею.
Rare:
А почему ты не можешь просто сделать так,чтобы предмет с твоей броней просто одевался на героя.Это самый простой вариант,в котором есть только одна проблема-найти/сделать модель этого предмета.
Работаю с ВоВ-моделью. Проще сделать много скинов к ней, как в самой ММО, чем модель брони.
ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
ответ
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
  1. чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
  2. действие проиграть звук и указываешь твою фразу
  3. выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
  1. система отлова урона
  2. морф юнита либо орбы
всё что я не описал есть в статьях
тебе нужны первые 2 раздела ("Основы" и "Триггеры и объекты")
ответ
В действиях, во вкладке "Герои" находишь "Set Hero level =", потом ставишь "Arithmetic" и делаешь "Hero level - 3".
ответ
Kind Ram:
В моей карте игроки вместе играют на острове "полном жизни". И если крипов по типу волка или медведя не будет на локации, то он окажется слишком уж пустым.
С координатной функцией юнит также завис.(
Решить проблему так и не смог, теперь просто тыкаю юнита-игрока в систему рывков, чтобы тот сбежал от крипа.

23

» WarCraft 3 / Скрытие стандартных иконок

Похожие вопросы:

ответ
Хозяин Миров
То есть как установить для различных уровней способности различные иконки?
Насколько я знаю, невозможно. Только разные способности. Способности можно заменять "Техникой".
ответ
ReplaceableTextures\CommandButtons\BTNPriest.blp
ответ
без мемхака - нет

23

» WarCraft 3 / Лестница

Похожие вопросы:

ответ
Щяс глянул, в этой карте это сделано на невидимых платформах, которые стоят изнчально, юниты с лесницами - импорт, анимация установки лесницы - морф.
Тока он ставит лестницу ( при этом не куда попало, а в отведенное место ) включаются невидимые плятформы которые позволяют идти по стене. Вокруг лестницы блокираторы пути, чтобы юниты не обходили...

23

» WarCraft 3 / Как играть онлайн?

Похожие вопросы:

ответ
Alex Daniels, в варике поддержки сокетов нет. Ваше решение костыльное.
ответ
Я тебе вот что скажу... Играю в Варик с 2006 года.
Короче ща перешёл в Гарену из-за того, что батл нете нельзя нормально хостить карту (там одни боты).
В общем: народу в гарене полно(комнаты почти всегда забыты по максимому). И что странно - половина из игроков - школьники... Откуда столько много школьников мне не понятно.
Но одно могу сказать точно - в Варик 3 играет больше народу, чем в Старкрафт 2. И будут играть ещё долго.
А я думал, что к 2010 году в варике 3 ТОЧНО никого не останется... Оказывается я жестко ошибался)

23

» WarCraft 3 / Помогите с функцией

Похожие вопросы:

ответ
способности написаны не на jass
способности это часть движка
и стоит хоть иногда читать статьи прежде чем задавать вопросы
а если тебя интересуют функции jass то это в common.j
ответ
Нигде. Нет их. Стандартные спеллы не написаны на JASS, тебе же уже сказали.
ответ
Farrien, попробуй скопировать функции в отдельную карту и глянь будет ли там работать
и зачем ты написал udg_ перед 2 переменными?
ответ
тут дело в конфликте
ибо системные функции(создание стартовых точек,main и прочее) депротектор автоматически переносит в файл для пользовательских функций
и теперь тебе надо просто удалить их из этого файла
файл называется war3map.wct
вот на будущее статья

23

» WarCraft 3 / Как сделать условие?

Похожие вопросы:

ответ
SomeFire, Suite,
Всё. Замутил.
Без всяких переменных, и для любого героя.
ответ
вот карта
в ней у героя-паладина есть способность - неуязвимость
при использовании все союзные юниты в радиусе 500 станут неуязвимы и будут записаны в группу ИЛИ если они уже в группе - станут уязвимы и будут исключены из группы
рядом с отрядом есть 3 волчьих всадника. они могут кастовать сеть на союзные войска. сеть может быть прокастована даже на НЕУЯЗВИМЫЕ войска, НО - не на юнитов из нашей группы. Ты увидишь сообщение в игре при попытке кастануть сеть на юнита из группы.
если герой умрет - все юниты в группе станут уязвимы.
для проверки нужно было поместить несколько неуязвимых нейтралов рядом с отрядом, но да ладно - надеюсь идею ты понял
ответ
Ник игрока - это строка. Условие должно быть строковым. Например:
  • Юнит поднимает предмет
  • Условия: Name Of (Owner of (Hero manipulating item)) не равно ТЕКСТ
  • Условия: Тип предмета равен "Боевые когти"
  • Герой - Выбросить предмет (Item beign manipulatid, hero manipulating item)
Советую еще почитать вот этот ответ. Там есть про "выбрасывание предмета". Та же самая ситуация, но другое условие
ответ
гуи
ответ
Ну только триггерные системы отрядов, была такая...
Вот пример ссылочка
Были и другие, поиск в помощь.
Вот еще ссылка

23

» WarCraft 3 / Понижения брони в %

Похожие вопросы:

ответ
читай статьи и f.a.q.
там написано как сделать отрицательные значения в скиле
ответ
Вот эта статья.
ответ
Ghostly, если способности не стакаются, можно попробовать вместо предметов со способностями использовать пустышки, а способности от них запихнуть в скрытый спеллбук и увеличить количество уровней. При подборе/выбрасывании делать проверку на наличие предметов и заносить в переменную. Например, те же ботинки +5, перчатки +10 - в сумме 15. Значит, скрытой способности нужно установить уровень 15.
Но это в теории. Я не пробовал такое.
У спеллбука есть несколько неприятных особенностей вроде сбрасывания уровня способностей при загрузке сохранённой игры, но можно делать проверку во время этой загрузки.